home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Developer Toolbox 6.1
/
SGI Developer Toolbox 6.1 - Disc 1.iso
/
toolbox
/
src
/
demos
/
OpenGL
/
insect
/
gl42ogl.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-11-11
|
5KB
|
230 lines
/*
* (c) Copyright 1993, 1994, Silicon Graphics, Inc.
* ALL RIGHTS RESERVED
* Permission to use, copy, modify, and distribute this software for
* any purpose and without fee is hereby granted, provided that the above
* copyright notice appear in all copies and that both the copyright notice
* and this permission notice appear in supporting documentation, and that
* the name of Silicon Graphics, Inc. not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission.
*
* THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
* AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
* FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
* GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
* SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
* KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
* LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
* THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
* POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
*
* US Government Users Restricted Rights
* Use, duplication, or disclosure by the Government is subject to
* restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
* (c)(1)(ii) of the Rights in Technical Data and Computer Software
* clause at DFARS 252.227-7013 and/or in similar or successor
* clauses in the FAR or the DOD or NASA FAR Supplement.
* Unpublished-- rights reserved under the copyright laws of the
* United States. Contractor/manufacturer is Silicon Graphics,
* Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
*
* OpenGL(TM) is a trademark of Silicon Graphics, Inc.
*/
#undef GEORGE_DEBUG
#ifdef GEORGE_DEBUG
# include <stdio.h>
#endif
#include <math.h>
#include <stdio.h>
#include <GL/gl.h>
#include "tk.h"
#include "gl42ogl.h"
int windX, windY;
void
getorigin (long *x, long *y) {
*x = windX;
*y = windY;
}
long
getvaluator (Device dev) {
/* gl4: origin in bottom right
*/
long originX, originY;
int mouseX, mouseY;
long val;
/* cost in performance in repeated calls,
* but hey you want an easy port as possible
*/
getorigin (&originX, &originY);
switch (dev) {
case MOUSEX:
tkGetMouseLoc (&mouseX, &mouseY);
val = mouseX + originX;
break;
case MOUSEY:
tkGetMouseLoc (&mouseX, &mouseY);
val = YOUR_SCREEN_MAXY - (mouseY + originY);
break;
default:
fprintf (stderr, "unsupported device: %d\n", dev);
break;
}
return (val);
}
#define PI 3.141593
void
gl_sincos (GLfloat ang, float *sine, float *cosine) {
float rads = ang * PI / 1800;
*sine = (float)sin (rads);
*cosine = (float)cos (rads);
}
void
glGetMatrix (GLfloat mat[]) {
short i;
GLint mode, ptr;
static GLfloat tmp[100];
glGetIntegerv (GL_MATRIX_MODE, &mode);
switch (mode) {
case GL_MODELVIEW:
glGetIntegerv (GL_MODELVIEW_STACK_DEPTH, &ptr);
glGetFloatv (GL_MODELVIEW_MATRIX, tmp);
break;
case GL_PROJECTION:
glGetIntegerv (GL_PROJECTION_STACK_DEPTH, &ptr);
glGetFloatv (GL_PROJECTION_MATRIX, tmp);
break;
case GL_TEXTURE:
glGetIntegerv (GL_TEXTURE_STACK_DEPTH, &ptr);
glGetFloatv (GL_TEXTURE_MATRIX, tmp);
break;
default:
fprintf (stderr, "unknown matrix mode: %d\n", mode);
break;
}
for (i = 0; i < 16; i++)
mat[i] = tmp[i];
}
void
mapcolor (Colorindex index, short r, short g, short b) {
/* gl4 -> rgb = [1,255]
* ogl -> rgb = [0,1]
*/
tkSetOneColor (index, r/255.0, g/255.0, b/255.0);
}
void
polf2i (long n, Icoord parray[][2]) {
register long i;
glBegin (GL_POLYGON);
for (i = 0; i < n; i++)
glVertex2iv (parray[i]);
glEnd();
}
void
polf2 (long n, Coord parray[][2]) {
register long i;
glBegin (GL_POLYGON);
for (i = 0; i < n; i++)
glVertex2fv (parray[i]);
glEnd();
}
void
polfi (long n, Icoord parray[][3]) {
register long i;
glBegin (GL_POLYGON);
for (i = 0; i < n; i++)
glVertex3iv (parray[i]);
glEnd();
}
void
polf (long n, Coord parray[][3]) {
register long i;
glBegin (GL_POLYGON);
for (i = 0; i < n; i++)
glVertex3fv (parray[i]);
glEnd();
}
void
poly2i (long n, Icoord parray[][2]) {
register long i;
glBegin (GL_LINE_LOOP);
for (i = 0; i < n; i++)
glVertex2iv (parray[i]);
glEnd();
}
void
poly2 (long n, Coord parray[][2]) {
register long i;
glBegin (GL_LINE_LOOP);
for (i = 0; i < n; i++)
glVertex2fv (parray[i]);
glEnd();
}
void
polyi (long n, Icoord parray[][3]) {
register long i;
glBegin (GL_LINE_LOOP);
for (i = 0; i < n; i++)
glVertex3iv (parray[i]);
glEnd();
}
void
poly (long n, Coord parray[][3]) {
register long i;
glBegin (GL_LINE_LOOP);
for (i = 0; i < n; i++)
glVertex3fv (parray[i]);
glEnd();
}